package desmontec.documentos

import grails.test.*
import desmontec.query.dpg.DPGQuery
import desmontec.testes.TesteIntegracao;
import desmontec.util.Constantes;
import desmontec.funcionarios.Engenheiro;
import desmontec.sistema.*;

class DPGControllerTests extends TesteIntegracao {
	
	static transactional = false
	
	def dpgService
	def dpgQuery
	
    protected void setUp() {
        super.setUp()
		dpgQuery = new DPGQuery();
		dpgQuery.setUsuario(new Long(1))
		
    }

    protected void tearDown() {
        super.tearDown()
    }
	
	
	void testInserirDados(){
		this.inserirUsuario()
		this.inserirEng()
		this.inserirDPG1()
		this.inserirDPG2()
		this.inserirDPG3()
	}
	
	/**
	* Teste para validar uma pesquisa sem parametros
	* deve retornar todas as dpgs validas cadastradas no sistema
	*/
   void testPesquisarDPGs(){
	   
	   def consulta = dpgService.consultarDPG(dpgQuery)
	   
	   assertTrue (consulta != null);
	   assertFalse (consulta.isEmpty());
	   // iterando consulta para validar que todas as DPGs sao validas
	   for(DPG dpgIt: consulta){
		   assertEquals "N", dpgIt.flagExpirada
	   }
   }
   
   /**
    * Consulta todas as DPGs cadastradas no sistema, valias e invalidas
    */
   void testPesquisarIncluindoDPGsInvalisdas(){
	   
	   dpgQuery.setConsiderarExpiradas(DPGQuery.FLAG_CONSIDERAR_EXPIRADAS);
	   def consulta = dpgService.consultarDPG(dpgQuery)
	   assertTrue (consulta != null);
	   assertFalse (consulta.isEmpty());
	}
   
   /**
    * Consulta as DPGs cadastradas no sistema por um responsavel
    */
   void testPesquisarDPGPorEngenheiro(){
	   
//	   this.inserirUsuario()
//	   this.inserirEng()
//	   this.inserirDPG1()
//	   this.inserirDPG2()
//	   this.inserirDPG3()
	   
	   
	   dpgQuery.setResponsavel(new Long(1));
	   def consulta = dpgService.consultarDPG(dpgQuery)
	   assertTrue (consulta != null);
	   assertFalse (consulta.isEmpty());
	   for(DPG dpgIt: consulta){
		   assertEquals "Wilson", dpgIt.responsavel.nome
	   }
	}
   
   
   /**
   * Consulta as DPGs cadastradas no sistema por um responsavel
   */
  void testPesquisarDPGPorNumero(){
	  
//	  this.inserirUsuario()
//	  this.inserirEng()
//	  this.inserirDPG1()
//	  this.inserirDPG2()
//	  this.inserirDPG3()
	  
	  
	  dpgQuery.setNumero(new Integer(1));
	  def consulta = dpgService.consultarDPG(dpgQuery)
	  assertTrue (consulta != null);
	  assertFalse (consulta.isEmpty());
	  for(DPG dpgIt: consulta){
		  assertEquals 1, dpgIt.numero
	  }
   }
  
   
}
